﻿#define  _CRT_SECURE_NO_WARNINGS 1
#define N_VALUES 5
#include <stdio.h>
//int main()
//{
//	int arr[5] = { 0 };
//	int* pa = &arr;
//	printf("%p\n", pa);
//	printf("%p\n", &arr+1);
//
//	return 0;
//}


//演示实例
//int main()
//{
//	int n = 10;
//	char* pc = (char*)&n;
//	int* pi = &n;
//
//	printf("%p\n", &n);
//	printf("%p\n", pc);
//	printf("%p\n", pc + 1);
//	printf("%p\n", pi);
//	printf("%p\n", pi + 1);
//	return 0;
//}




//演示实例
//int main()
//{
//	int n = 0x11223344;
//	char* pc = (char*)&n;
//	int* pi = &n;
//	*pc = 0;
//	*pi = 0;
//	return 0;
//}

//指针指向的空间被释放
//int* text()
//{
//	int a = 10;
//	return &a;
//}
//
//
//int main()
//{
//	int* pa = text();
//	printf("%d ", *pa);
//	return 0;
//}


//指针未初始化
//int main()
//{
//	int* p;//局部变量指针未初始化，默认为随机值
//	*p = 20;
//	return 0;
//}

//指针越界访问
//int main()
//{
//	int arr[10] = { 0 };
//	int* p = arr;
//	int i = 0;
//	for (i = 0; i <= 11; i++)
//	{
//		//当指针指向的范围超出数组arr的范围时，p就是野指针
//		*(p++) = i;
//	}
//	return 0;
//}


//指针+-整数

//int main()
//{
//	float values[N_VALUES];
//	float* vp;
//	for (vp = &values[0]; vp < &values[N_VALUES];)
//	{
//		*vp++ = 0;
//	}
//}

//指针-指针
int my_strlen(char* str)
{
	char* str1 = str;
	while (*str != '\0')
	{
		str++;
	}
	return str - str1;
}
int main()
{
	char arr[] = "abcdef";
	int ret = my_strlen(arr);
	printf("%d ", ret);
	return 0;
}